home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1419 / 1419.xpi / chrome / content / ietabUtils.js < prev    next >
Text File  |  2008-11-30  |  8KB  |  195 lines

  1. //-----------------------------------------------------------------------------
  2.  
  3. IeTab.prototype.mlog = function(text) {
  4.   Components.classes["@mozilla.org/consoleservice;1"]
  5.     .getService(Components.interfaces.nsIConsoleService)
  6.     .logStringMessage("IeTab: "+text);
  7. }
  8.  
  9. //-----------------------------------------------------------------------------
  10.  
  11. IeTab.prototype.addEventListener = function(obj, type, listener) {
  12.    if (typeof(obj) == "string") obj = document.getElementById(obj);
  13.    if (obj) obj.addEventListener(type, listener, false);
  14. }
  15. IeTab.prototype.removeEventListener = function(obj, type, listener) {
  16.    if (typeof(obj) == "string") obj = document.getElementById(obj);
  17.    if (obj) obj.removeEventListener(type, listener, false);
  18. }
  19.  
  20. IeTab.prototype.addEventListenerByTagName = function(tag, type, listener) {
  21.    var objs = document.getElementsByTagName(tag);
  22.    for (var i = 0; i < objs.length; i++) {
  23.       objs[i].addEventListener(type, listener, false);
  24.    }
  25. }
  26. IeTab.prototype.removeEventListenerByTagName = function(tag, type, listener) {
  27.    var objs = document.getElementsByTagName(tag);
  28.    for (var i = 0; i < objs.length; i++) {
  29.       objs[i].removeEventListener(type, listener, false);
  30.    }
  31. }
  32.  
  33. //-----------------------------------------------------------------------------
  34.  
  35. IeTab.prototype.hookCode = function(orgFunc, orgCode, myCode) {
  36.    try{ if (eval(orgFunc).toString() == eval(orgFunc + "=" + eval(orgFunc).toString().replace(orgCode, myCode))) throw orgFunc; }
  37.    catch(e){ Components.utils.reportError("Failed to hook function: "+orgFunc); }
  38. }
  39.  
  40. IeTab.prototype.hookAttr = function(parentNode, attrName, myFunc) {
  41.    if (typeof(parentNode) == "string") parentNode = document.getElementById(parentNode);
  42.    try { parentNode.setAttribute(attrName, myFunc + parentNode.getAttribute(attrName)); }catch(e){ Components.utils.reportError("Failed to hook attribute: "+attrName); }
  43. }
  44.  
  45. IeTab.prototype.hookProp = function(parentNode, propName, myGetter, mySetter) {
  46.    var oGetter = parentNode.__lookupGetter__(propName);
  47.    var oSetter = parentNode.__lookupSetter__(propName);
  48.    if (oGetter && myGetter) myGetter = oGetter.toString().replace(/{/, "{"+myGetter.toString().replace(/^.*{/,"").replace(/.*}$/,""));
  49.    if (oSetter && mySetter) mySetter = oSetter.toString().replace(/{/, "{"+mySetter.toString().replace(/^.*{/,"").replace(/.*}$/,""));
  50.    if (!myGetter) myGetter = oGetter;
  51.    if (!mySetter) mySetter = oSetter;
  52.    if (myGetter) try { eval('parentNode.__defineGetter__(propName, '+ myGetter.toString() +');'); }catch(e){ Components.utils.reportError("Failed to hook property Getter: "+propName); }
  53.    if (mySetter) try { eval('parentNode.__defineSetter__(propName, '+ mySetter.toString() +');'); }catch(e){ Components.utils.reportError("Failed to hook property Setter: "+propName); }
  54. }
  55.  
  56. //-----------------------------------------------------------------------------
  57.  
  58. IeTab.prototype.trim = function(s) {
  59.    if (s) return s.replace(/^\s+/g,"").replace(/\s+$/g,""); else return "";
  60. }
  61.  
  62. IeTab.prototype.startsWith = function(s, prefix) {
  63.    if (s) return( (s.substring(0, prefix.length) == prefix) ); else return false;
  64. }
  65.  
  66. //-----------------------------------------------------------------------------
  67.  
  68. IeTab.prototype.getBoolPref = function(prefName, defval) {
  69.    var result = defval;
  70.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  71.    var prefs = prefservice.getBranch("");
  72.    if (prefs.getPrefType(prefName) == prefs.PREF_BOOL) {
  73.        try { result = prefs.getBoolPref(prefName); }catch(e){}
  74.    }
  75.    return(result);
  76. }
  77.  
  78. IeTab.prototype.getIntPref = function(prefName, defval) {
  79.    var result = defval;
  80.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  81.    var prefs = prefservice.getBranch("");
  82.    if (prefs.getPrefType(prefName) == prefs.PREF_INT) {
  83.        try { result = prefs.getIntPref(prefName); }catch(e){}
  84.    }
  85.    return(result);
  86. }
  87.  
  88. IeTab.prototype.getStrPref = function(prefName, defval) {
  89.    var result = defval;
  90.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  91.    var prefs = prefservice.getBranch("");
  92.    if (prefs.getPrefType(prefName) == prefs.PREF_STRING) {
  93.        try { result = prefs.getComplexValue(prefName, Components.interfaces.nsISupportsString).data; }catch(e){}
  94.    }
  95.    return(result);
  96. }
  97.  
  98. //-----------------------------------------------------------------------------
  99.  
  100. IeTab.prototype.setBoolPref = function(prefName, value) {
  101.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  102.    var prefs = prefservice.getBranch("");
  103.    try { prefs.setBoolPref(prefName, value); } catch(e){}
  104. }
  105.  
  106. IeTab.prototype.setIntPref = function(prefName, value) {
  107.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  108.    var prefs = prefservice.getBranch("");
  109.    try { prefs.setIntPref(prefName, value); } catch(e){}
  110. }
  111.  
  112. IeTab.prototype.setStrPref = function(prefName, value) {
  113.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  114.    var prefs = prefservice.getBranch("");
  115.    var sString = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  116.    sString.data = value;
  117.    try { prefs.setComplexValue(prefName, Components.interfaces.nsISupportsString, sString); } catch(e){}
  118. }
  119.  
  120. //-----------------------------------------------------------------------------
  121.  
  122. IeTab.prototype.getDefaultCharset = function(defval) {
  123.    var charset = this.getStrPref("ietab.intl.charset.default", "");
  124.    if (charset.length) return charset;
  125.     var gPrefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
  126.     if(gPrefs.prefHasUserValue("intl.charset.default")) {
  127.        return gPrefs.getCharPref("intl.charset.default");
  128.     } else {
  129.        var strBundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
  130.        var intlMess = strBundle.createBundle("chrome://global-platform/locale/intl.properties");
  131.        try {
  132.           return intlMess.GetStringFromName("intl.charset.default");
  133.        } catch(e) {
  134.           return defval;
  135.       }
  136.     }
  137. }
  138.  
  139. IeTab.prototype.convertToUTF8 = function(data, charset) {
  140.    try {
  141.       data = decodeURI(data);
  142.    }catch(e){
  143.       if (!charset) charset = gIeTab.getDefaultCharset();
  144.       if (charset) {
  145.          var uc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  146.          try {
  147.             uc.charset = charset;
  148.             data = uc.ConvertToUnicode(unescape(data));
  149.             data = decodeURI(data);
  150.          }catch(e){}
  151.          uc.Finish();
  152.       }
  153.    }
  154.    return data;
  155. }
  156.  
  157. IeTab.prototype.convertToASCII = function(data, charset) {
  158.    if (!charset) charset = gIeTab.getDefaultCharset();
  159.    if (charset) {
  160.       var uc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  161.       uc.charset = charset;
  162.       try {
  163.          data = uc.ConvertFromUnicode(data);
  164.       }catch(e){
  165.          data = uc.ConvertToUnicode(unescape(data));
  166.          data = decodeURI(data);
  167.          data = uc.ConvertFromUnicode(data);
  168.       }
  169.       uc.Finish();
  170.    }
  171.    return data;
  172. }
  173.  
  174. //-----------------------------------------------------------------------------
  175.  
  176. IeTab.prototype.getUrlDomain = function(url) {
  177.    if (url && !gIeTab.startsWith(url, "about:")) {
  178.       if (/^file:\/\/.*/.test(url)) return url;
  179.       var matches = url.match(/^([A-Za-z]+:\/+)*([^\:^\/]+):?(\d*)(\/.*)*/);
  180.       if (matches) url = matches[1]+matches[2]+(matches[3]==""?"":":"+matches[3])+"/";
  181.    }
  182.    return url;
  183. }
  184.  
  185. IeTab.prototype.getUrlHost = function(url) {
  186.    if (url && !gIeTab.startsWith(url, "about:")) {
  187.       if (/^file:\/\/.*/.test(url)) return url;
  188.       var matches = url.match(/^([A-Za-z]+:\/+)*([^\:^\/]+):?(\d*)(\/.*)*/);
  189.       if (matches) url = matches[2];
  190.    }
  191.    return url;
  192. }
  193.  
  194. //-----------------------------------------------------------------------------
  195.